package top.z.work.module.system.entity.table;

import com.mybatisflex.core.query.QueryColumn;
import com.mybatisflex.core.table.TableDef;

import java.io.Serial;

/**
 * 表定义层。
 *
 * @author zaoangod
 * @since 2024-07-26
 */
public class SystemLoggerErrorTableDef extends TableDef {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     *
     */
    public static final SystemLoggerErrorTableDef SYSTEM_LOGGER_ERROR = new SystemLoggerErrorTableDef();

    /**
     * 用户主键
     */
    public final QueryColumn USER_ID = new QueryColumn(this, "user_id");

    /**
     * 链路追踪编号
     */
    public final QueryColumn TRACE_ID = new QueryColumn(this, "trace_id");

    /**
     * 数据主键
     */
    public final QueryColumn IDENTITY = new QueryColumn(this, "identity");

    /**
     * 请求IP
     */
    public final QueryColumn REQUEST_IP = new QueryColumn(this, "request_ip");

    /**
     * 浏览器 UA
     */
    public final QueryColumn USER_AGENT = new QueryColumn(this, "user_agent");

    /**
     * 访问地址
     */
    public final QueryColumn REQUEST_URL = new QueryColumn(this, "request_url");

    /**
     * 异常名称
     */
    public final QueryColumn EXCEPTION_NAME = new QueryColumn(this, "exception_name");

    /**
     * 异常发生时间
     */
    public final QueryColumn EXCEPTION_TIME = new QueryColumn(this, "exception_time");

    /**
     * 请求方法
     */
    public final QueryColumn REQUEST_METHOD = new QueryColumn(this, "request_method");

    /**
     * 异常导致的消息
     */
    public final QueryColumn EXCEPTION_MESSAGE = new QueryColumn(this, "exception_message");

    /**
     * 请求参数
     */
    public final QueryColumn REQUEST_PARAMETER = new QueryColumn(this, "request_parameter");

    /**
     * 异常发生的类文件
     */
    public final QueryColumn EXCEPTION_FILE_NAME = new QueryColumn(this, "exception_file_name");

    /**
     * 异常发生的类全名
     */
    public final QueryColumn EXCEPTION_CLASS_NAME = new QueryColumn(this, "exception_class_name");

    /**
     * 异常发生的方法所在行
     */
    public final QueryColumn EXCEPTION_LINE_NUMBER = new QueryColumn(this, "exception_line_number");

    /**
     * 异常发生的方法名
     */
    public final QueryColumn EXCEPTION_METHOD_NAME = new QueryColumn(this, "exception_method_name");

    /**
     * 异常的栈轨迹
     */
    public final QueryColumn EXCEPTION_STACK_TRACE = new QueryColumn(this, "exception_stack_trace");

    /**
     * 异常导致的根消息
     */
    public final QueryColumn EXCEPTION_ROOT_CAUSE_MESSAGE = new QueryColumn(this, "exception_root_cause_message");

    /**
     * 所有字段。
     */
    public final QueryColumn ALL_COLUMNS = new QueryColumn(this, "*");

    /**
     * 默认字段，不包含逻辑删除或者 large 等字段。
     */
    public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{IDENTITY, USER_ID, TRACE_ID, REQUEST_METHOD, REQUEST_URL, REQUEST_PARAMETER, REQUEST_IP, USER_AGENT, EXCEPTION_TIME, EXCEPTION_NAME, EXCEPTION_MESSAGE, EXCEPTION_ROOT_CAUSE_MESSAGE, EXCEPTION_STACK_TRACE, EXCEPTION_CLASS_NAME, EXCEPTION_FILE_NAME, EXCEPTION_METHOD_NAME, EXCEPTION_LINE_NUMBER};

    public SystemLoggerErrorTableDef() {
        super("", "system_logger_error");
    }

}
